home *** CD-ROM | disk | FTP | other *** search
/ Software USA 3 #11 / Software USA Volume 3.11.iso / mac / Games / World Builder / Documentation / Global Code Info < prev    next >
Text File  |  1995-12-01  |  13KB  |  264 lines

  1.  
  2. Global Code Information
  3. By RayDunakin@aol.com
  4.  
  5. 11/28/95
  6. -----------------------------------
  7.  
  8. If you use the original World Template, it will create a small amount of global code for your game. However, it is not even close to the amount of code you will need to correctly provide for all the standard commands in a quality adventure game. 
  9.  
  10. To remedy this, I have added my own custom global code to "Ray's World Template." To use the template, just make a duplicate of it. Change the name of the duplicate to whatever you want your game to be called. For additional instructions, be sure to read the file called "Getting Started."
  11.  
  12. The global code I've written into the template will be included in your game. You will need most of it, if you want your game to respond properly when the player enters common commands. Some of it you may not need, depending on your game. You can remove or alter any of it that you don't need. Some of the code keeps track of the player's money, some of it handles eating food or drinking from a canteen. These things will require additional scene code to complete the process. I will describe the necessary code further on in this text.
  13.  
  14. Here is the complete global code that you will find, followed by a detailed explanation of each segment:
  15.  
  16. IF{TEXT$=MOVE}OR{TEXT$=PUSH}OR{TEXT$=PULL}THEN
  17.     PRINT{You can't move that.}
  18. EXIT
  19. IF{TEXT$=SEARCH}THEN
  20.     PRINT{You find nothing unusual.}
  21. EXIT
  22. IF{TEXT$=OPEN}THEN
  23.     PRINT{You can't open anything here.}
  24. EXIT
  25. IF{TEXT$=CLOSE}THEN
  26.     PRINT{You can't close anything here.}
  27. EXIT
  28. IF{TEXT$=ENTER}THEN
  29.     PRINT{You can't enter anything here.}
  30. EXIT
  31. IF{TEXT$=EXIT}THEN
  32.     PRINT{You can't exit anything here.}
  33. EXIT
  34. IF{TEXT$=UP}OR{TEXT$=CLIMB}THEN
  35.     PRINT{You can't go up here.}
  36. EXIT
  37. IF{TEXT$=DOWN}THEN
  38.     PRINT{You can't go down here.}
  39. EXIT
  40. IF{TEXT$=USE}THEN
  41.     PRINT{That doesn't work.}
  42. EXIT
  43. IF{TEXT$=HIT}OR{TEXT$=BREAK}THEN
  44.     PRINT{You can't break that.}
  45. EXIT
  46. IF{TEXT$=SHOOT}THEN
  47.     PRINT{You shouldn't shoot that.}
  48. EXIT
  49. IF{TEXT$=READ}THEN
  50.     PRINT{Read what?}
  51. EXIT
  52. IF{TEXT$=EAT}OR{TEXT$=TASTE}THEN
  53.     PRINT{..................................}
  54.     IF{TEXT$=FOOD}THEN
  55.         IF{FOOD=PLAYER@}THEN
  56.             SOUND{CHEWING.1}
  57.             SOUND{BELCH.2}
  58.             PRINT{The food is filling.}
  59.             LET{H1#=95}
  60.             MOVE{FOOD}TO{STORAGE@}
  61.         EXIT
  62.         PRINT{You don't have any food.}
  63.     EXIT
  64.     PRINT{Eat what?}
  65. EXIT
  66. IF{TEXT$=$}OR{TEXT$=COUNT MONEY}THEN
  67.     PRINT{..................................}
  68.     IF{CASH>PLAYER@}OR{M1#<1}THEN
  69.         PRINT{You have no CASH.}
  70.     EXIT
  71.     PRINT{You have}
  72.     PRINT{M1#}
  73.     PRINT{dollars.}
  74. EXIT
  75. IF{TEXT$=DRINK}THEN
  76.     PRINT{..................................}
  77.     IF{CANTEEN=PLAYER@}THEN
  78.         IF{W1#>0}THEN
  79.             LET{W1#=W1#-1}
  80.             SOUND{DROWNING.1}
  81.             PRINT{The water in the canteen relieves your thirst.}
  82.             LET{H2#=90}
  83.             IF{W1#=0}THEN
  84.                 PRINT{The canteen is now empty.}
  85.             EXIT
  86.         EXIT
  87.         PRINT{Your canteen is empty.}
  88.     EXIT
  89.     PRINT{Drink what?}
  90. EXIT
  91. IF{TEXT$=THANKS}OR{TEXT$=THANK YOU}THEN
  92.     PRINT{"You're welcome!"}
  93. EXIT
  94. IF{TEXT$=TURN}OR{TEXT$=TWIST}THEN
  95.     PRINT{You can't turn that.}
  96. EXIT
  97. IF{TEXT$=DIG}THEN
  98.     PRINT{You can't dig here.}
  99. EXIT
  100. IF{TEXT$=INSPECT}OR{TEXT$=EXAMINE}THEN
  101.     PRINT{Click on the things you want to examine.}
  102. EXIT
  103.  
  104. ----------------------------------------------
  105. This is the end of the Global code in Ray's World Template. Below is a breakdown of the code into segments, with explanations of each section:
  106.  
  107. IF{TEXT$=MOVE}OR{TEXT$=PUSH}OR{TEXT$=PULL}THEN
  108.     PRINT{You can't move that.}
  109. EXIT
  110.  
  111. This statement will print in the text window of the current scene, a default response whenever the player tries to move, push or pull something. If there is anything in the scene that can be moved in one of these ways, it would be handled by the scene code. But if the player tries to move something that is not handled by scene code, this will ensure that the player gets an appropriate response.
  112.  
  113. IF{TEXT$=SEARCH}THEN
  114.     PRINT{You find nothing of interest.}
  115. EXIT
  116.  
  117. "Search" is a common command used in most World Builder games. It is included in the Commands menu during the game. This statement will print a default response whenever there is nothing to be found during a search. 
  118.  
  119. IF{TEXT$=OPEN}THEN
  120.     PRINT{You can't open anything here.}
  121. EXIT
  122. IF{TEXT$=CLOSE}THEN
  123.     PRINT{You can't close anything here.}
  124. EXIT
  125.  
  126. These two statements print the default response anytime the player tries to open or close something that cannot be opened or closed, except when there is specific scene code to handle it.
  127.  
  128.  
  129. IF{TEXT$=ENTER}THEN
  130.     PRINT{You can't enter anything here.}
  131. EXIT
  132. IF{TEXT$=EXIT}THEN
  133.     PRINT{You can't exit anything here.}
  134. EXIT
  135. IF{TEXT$=UP}OR{TEXT$=CLIMB}THEN
  136.     PRINT{You can't go up here.}
  137. EXIT
  138. IF{TEXT$=DOWN}THEN
  139.     PRINT{You can't go down here.}
  140. EXIT
  141.  
  142. These four statements are pretty self-explanatory. If the player tries to enter or exit something that isn't handled by scene code, these statements print the default response. The second pair of statements print the defaults for "up" "climb" and "down." When a player uses "climb," he or she almost always wants to go up, so the two words are treated the same here. Wherever there is something that that player is likely to try to go down by climbing, the code to handle that should be included in the scene code.
  143.  
  144.  
  145. IF{TEXT$=USE}THEN
  146.     PRINT{That doesn't work.}
  147. EXIT
  148.  
  149. The most common command verb should always be "use." Whenever the player tries to use something in the wrong place or the wrong way, this statement prints a default response. In some scenes you may need to add some more specific responses to the scene code, usually for the purpose of explaining why the requested action doesn't work.
  150.  
  151.  
  152. IF{TEXT$=HIT}OR{TEXT$=BREAK}THEN
  153.     PRINT{You can't break that.}
  154. EXIT
  155.  
  156. This one is also pretty obvious -- a default response to a couple of common commands.
  157.  
  158.  
  159. IF{TEXT$=SHOOT}THEN
  160.     PRINT{You shouldn't shoot that.}
  161. EXIT
  162.  
  163. Another default response statement. It's not really necessary to check whether or not the player has a gun, since in either case the player is going to be prevented from carrying out the action. In some scenes you may need scene code that provides more specific responces. Of course, if there are no guns in the game at all, then you could delete this entirely.
  164.  
  165.  
  166. IF{TEXT$=READ}THEN
  167.     PRINT{Read what?}
  168. EXIT
  169.  
  170. The default response here is a question that asks the player to specify what it is he wants to read. The reason for this is, if you give the player several possible things to read, such as a map, a sign, a newspaper, or a book, the only way to provide the correct action for each object is if the player is specific. Some objects like maps might be carried, and could be read in any scene. In that case, you would need to place the appropriate code here, as a nested sub-statement under "read". For signs and other stationary objects, the code can go in the scene code. Check out the code in my WB Demo game, or in A Mess O'Trouble, to see examples of how I've handled these situations.
  171.  
  172.  
  173. IF{TEXT$=EAT}OR{TEXT$=TASTE}THEN
  174.     PRINT{..................................}
  175.     IF{TEXT$=FOOD}THEN
  176.         IF{FOOD=PLAYER@}THEN
  177.             SOUND{CHEWING.1}
  178.             SOUND{BELCH.2}
  179.             PRINT{The food is filling.}
  180.             LET{H1#=95}
  181.             MOVE{FOOD}TO{STORAGE@}
  182.         EXIT
  183.         PRINT{You don't have any food.}
  184.     EXIT
  185.     PRINT{Eat what?}
  186. EXIT
  187.  
  188. This code may not be needed, if you don't plan to have require eating in your game. In that case, all you'd need is a simple statement that prints "You can't eat that." 
  189.  
  190. But if you do want to make eating a part of your game, the code here will provide a good starting point. I've use variable H1 as a counter to keep track of the player's hunger. When the player eats the food, H1 is reset to 95, and the food object is moved to storage. Much more code will be needed to make a complete eat/hunger function.
  191.  
  192. First, you'd need some code near the beginning of the global code, which detects when the variable H1 goes below a certain point, say 15. This code should print a message telling the player that he needs to eat soon. Additional code will be needed that prints a message telling the player that he has died of hunger if H1 drops below zero, and moves the player character to storage to end the game.
  193.  
  194. Also, you'd need some code in each scene that reduces H1 by one point each time the player enters a scene.  In this way, the player's hunger points will gradually be reduced as he moves through the game. Also, be sure to provide plenty of places where the player can obtain food in the game. You don't want to make it too difficult. The player shouldn't have to struggle constantly to avoid starvation. And some scene code will be needed if there are any places where the player can find non-portable food sources, such as restaurants or inns. 
  195.  
  196.  
  197. IF{TEXT$=$}OR{TEXT$=COUNT MONEY}THEN
  198.     PRINT{..................................}
  199.     IF{CASH>PLAYER@}OR{M1#<1}THEN
  200.         PRINT{You have no CASH.}
  201.     EXIT
  202.     PRINT{You have}
  203.     PRINT{M1#}
  204.     PRINT{dollars.}
  205. EXIT
  206.  
  207. If you don't intend to use money at all in your game, you can delete this. But if you do want to use money, this code is an efficient way to tell the player how much money he has. The variable M1 is used here as a counter for the player's money. In the Objects list, you will need a CASH object, which the player must have if he has money. Whenever the player spends all his money in a store or inn, be sure to move the CASH object to storage. Instead of CASH, you could have a purse, pouch or wallet that the player can carry at all times. In either case, a variable such as M1 must always be sued to keep track of the actual amount of money.
  208.  
  209. If you use the CASH object, or a wallet, or purse, you'll also need some coins or similar object that the player can find or earn to whenever needed. This object should be moved to storage when the player picks it up. It should never be carried. When the player takes the coins and they are moved to storage, update the money variable as much as desired. All of this should be handled in the scene code. 
  210.  
  211. And of course, you don't have to use dollars. You can report the player's cash amounts in the form or gold pieces, wampum, or anything else that suits you.
  212.  
  213.  
  214. IF{TEXT$=DRINK}THEN
  215.     PRINT{..................................}
  216.     IF{CANTEEN=PLAYER@}THEN
  217.         IF{W1#>0}THEN
  218.             LET{W1#=W1#-1}
  219.             SOUND{DROWNING.1}
  220.             PRINT{The water in the canteen relieves your thirst.}
  221.             LET{H2#=90}
  222.             IF{W1#=0}THEN
  223.                 PRINT{The canteen is now empty.}
  224.             EXIT
  225.         EXIT
  226.         PRINT{Your canteen is empty.}
  227.     EXIT
  228.     PRINT{Drink what?}
  229. EXIT
  230.  
  231. Like the food code describe earlier, this section handles drinking. A canteen is needed to carry the player's water, and the variable W1 is used to count the number o drinks he can take before the canteen is empty. Varible H2 is used to represent the player's thirst. Like the hunger code, this is just the beginning. You will also need to provide places where the player can refill the canteen (or whatever you choose to use). And you'll need some code to handle any attempts to empty the canteen or to fill it with anything other than water. 
  232.  
  233. If you decide not to have this feature in your game, you should at least have a statement that prints a default response of "You can't drink that." for those times when the player may try to consume some inappropriate substance in the game. (If the player encounters a "mucous beast" for instance, you can bet that some wiseguy or desperate player will try to defeat it by drinking it.)
  234.  
  235.  
  236. IF{TEXT$=THANKS}OR{TEXT$=THANK YOU}THEN
  237.     PRINT{"You're welcome!"}
  238. EXIT
  239.  
  240. When I started making games, I noticed during test play that some players would enter "thank you" or thanks" whenever a non-player character gave them information or useful objects. As a result, I made a point of adding a default response for this.
  241.  
  242.  
  243. IF{TEXT$=TURN}OR{TEXT$=TWIST}THEN
  244.     PRINT{You can't turn that.}
  245. EXIT
  246.  
  247. Even if you don't have anything that the player can turn in your game, you still need this default response, because inevitably someone will try to turn or twist something. 
  248.  
  249.  
  250. IF{TEXT$=DIG}THEN
  251.     PRINT{You can't dig here.}
  252. EXIT
  253.  
  254. This one's pretty obvious. Remember, the point of these default responses is to provide a reasonable response to actions that a player might try, whether or not there is anyplace in the game where that action is required.
  255.  
  256.  
  257. IF{TEXT$=INSPECT}OR{TEXT$=EXAMINE}THEN
  258.     PRINT{Click on the things you want to examine.}
  259. EXIT
  260.  
  261. This one tells the player how to get a description of objects in the scene, if the player tries to "inspect" or "examine" them. In many text adventures, inspect and examine are the verbs used to get object descriptions, and players who are used to that may try it in a graphic adventure.
  262.  
  263. These are some of things that should be in almost any game. Your own game may very well need additional default response, and other special code actions in the global code. Remember that there is a limit of 10,240 text characters allowed in the global code, so be careful about what goes into your global code.
  264.